package com.company.oa.document.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 公文实体类
 */
@Data
@TableName("doc_document")
public class Document implements Serializable {
    private static final long serialVersionUID = 1L;

    /**
     * ID
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 公文编号
     */
    private String docNumber;

    /**
     * 标题
     */
    private String title;

    /**
     * 内容
     */
    private String content;

    /**
     * 类型：1-通知，2-请示，3-报告，4-决定，5-其他
     */
    private Integer type;

    /**
     * 发文单位
     */
    private String issuer;

    /**
     * 发文日期
     */
    private LocalDateTime issueDate;

    /**
     * 紧急程度：1-普通，2-紧急，3-特急
     */
    private Integer urgencyLevel;

    /**
     * 密级：1-普通，2-秘密，3-机密，4-绝密
     */
    private Integer securityLevel;

    /**
     * 状态：0-草稿，1-审批中，2-已通过，3-已驳回，4-已归档
     */
    private Integer status;

    /**
     * 创建人ID
     */
    private Long creatorId;

    /**
     * 创建人姓名
     */
    private String creatorName;

    /**
     * 部门ID
     */
    private Long departmentId;

    /**
     * 部门名称
     */
    private String departmentName;

    /**
     * 当前审批人ID
     */
    private Long currentApproverId;

    /**
     * 当前审批人姓名
     */
    private String currentApproverName;

    /**
     * 审批流程ID
     */
    private Long approvalFlowId;

    /**
     * 创建时间
     */
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    private LocalDateTime updateTime;

    /**
     * 归档时间
     */
    private LocalDateTime archiveTime;

    /**
     * 是否删除：0-未删除，1-已删除
     */
    private Integer isDeleted;

    /**
     * 附件列表（非数据库字段）
     */
    @TableField(exist = false)
    private List<DocumentAttachment> attachments;

    /**
     * 审批记录（非数据库字段）
     */
    @TableField(exist = false)
    private List<ApprovalRecord> approvalRecords;
} 